library(tidyverse)
library(sf)
library(rnaturalearth)
library(rnaturalearthhires)
library(rnaturalearthdata)
library(png)
library(grid)
library(geobr)
library(tmap)
library(biscale)
library(patchwork)
5 Usando shapefile
Neste capítulo iremos utilizar os dados do site do IBGE (https://www.ibge.gov.br/geociencias/organizacao-do-territorio/malhas-territoriais.html). Os dados encontram-se divididos em Municípios; Unidades da Federação; Microrregiões; Mesorregiões; Regiões Geográficas Imediatas e Regiões Geográficas Intermediárias. No site, você verá a seguinte tela:
Para acessar os shapes contendo os dados do Brasil e de seus estados, contendo as delimitações de cada um, você deve selecionar botão de Malha Municipal, destacado na página inicial acima. Ao selecionar Malha Municipal você verá a seguinte página.
Nesta página vamos fazer o download (destaque acima) dos dados de Municípios do Brasil. Ao baixar, na área de downloads você verá a pasta. Antes de utilizá-la você deverá descompactá-la com um programa para este fim de sua preferência. Após descompactar, mova a pasta com os arquivos de Municípios para a pasta de trabalho. A pasta contém os seguintes arquivos:
Os procedimentos apresentados até aqui valem para obtenção de outros conjuntos de dados de interesse dentro do site do IBGE.
Após a obtenção dos dados, podemos importá-los ao R e manipular esses dados.
5.1 Municípios
Vamos carregar os pacotes necessários:
5.1.1 Importando dados
<- st_read("BR_Municipios_2022/BR_Municipios_2022.shp") BR
Reading layer `BR_Municipios_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/BR_Municipios_2022/BR_Municipios_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 5572 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -73.99045 ymin: -33.75118 xmax: -28.84764 ymax: 5.271841
Geodetic CRS: SIRGAS 2000
5.1.2 Visualizando os dados
ggplot() +
geom_sf(data = BR)
5.2 Microrregiões
5.2.1 Importando dados
<- st_read("BR_Microrregioes_2022/BR_Microrregioes_2022.shp") BR_micro
Reading layer `BR_Microrregioes_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/BR_Microrregioes_2022/BR_Microrregioes_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 560 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -73.99045 ymin: -33.75118 xmax: -28.84764 ymax: 5.271841
Geodetic CRS: SIRGAS 2000
5.2.2 Visualizando os dados
ggplot() +
geom_sf(data = BR_micro)
5.3 Mesorregiões
5.3.1 Importando dados
<- st_read("BR_Mesorregioes_2022/BR_Mesorregioes_2022.shp") BR_meso
Reading layer `BR_Mesorregioes_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/BR_Mesorregioes_2022/BR_Mesorregioes_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 139 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -73.99045 ymin: -33.75118 xmax: -28.84764 ymax: 5.271841
Geodetic CRS: SIRGAS 2000
5.3.2 Visualizando os dados
ggplot() +
geom_sf(data = BR_meso)
5.4 Estado específico
5.4.1 Municípios
5.4.2 Importando dados
<-st_read("MG_Municipios_2022/MG_Municipios_2022.shp") Minas
Reading layer `MG_Municipios_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/MG_Municipios_2022/MG_Municipios_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 853 features and 4 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: -51.04608 ymin: -22.92276 xmax: -39.85683 ymax: -14.23318
Geodetic CRS: SIRGAS 2000
5.4.3 Visualizando os dados
ggplot() +
geom_sf(data = Minas)
5.4.4 Microrregiões
5.4.4.1 Importando dados
<- st_read("MG_Microrregioes_2022/MG_Microrregioes_2022.shp") Minas_micro
Reading layer `MG_Microrregioes_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/MG_Microrregioes_2022/MG_Microrregioes_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 66 features and 4 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: -51.04608 ymin: -22.92276 xmax: -39.85683 ymax: -14.23318
Geodetic CRS: SIRGAS 2000
5.4.4.2 Importando dados
ggplot() +
geom_sf(data = Minas_micro)
5.4.5 Mesorregiões
5.4.5.1 Importando dados
<- st_read("MG_Mesorregioes_2022/MG_Mesorregioes_2022.shp") Minas_meso
Reading layer `MG_Mesorregioes_2022' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/MG_Mesorregioes_2022/MG_Mesorregioes_2022.shp'
using driver `ESRI Shapefile'
Simple feature collection with 12 features and 4 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: -51.04608 ymin: -22.92276 xmax: -39.85683 ymax: -14.23318
Geodetic CRS: SIRGAS 2000
5.4.5.2 Importando dados
ggplot() +
geom_sf(data = Minas_meso)
5.4.6 Destacando regiões dentro de um Estado específico
5.4.6.1 Minas Gerais
# Viçosa
<- 3171303 # Viçosa
codigo_ibge <- 3110202 # Cajuri
codigo_ibge2 <- 3169000 # Tocantins
codigo_ibge3 <- 3150802 # Piranga
codigo_ibge4
# Região Lavras
<- 3138203 # Lavras
codigo_ibge5 <- 3111200 # Campo Belo
codigo_ibge6 <- 3130309 # Iguatama
codigo_ibge7 <- 3113909 # Carmo da Cachoeira
codigo_ibge8
# Filtrar apenas a cidade desejada
<- Minas %>% filter(CD_MUN == 3171303)
cidade <- Minas %>% filter(CD_MUN == 3110202)
cidade2 <- Minas %>% filter(CD_MUN == 3169000)
cidade3 <- Minas %>% filter(CD_MUN == 3150802)
cidade4 <- Minas %>% filter(CD_MUN == 3138203)
cidade5 <- Minas %>% filter(CD_MUN == 3111200)
cidade6 <- Minas %>% filter(CD_MUN == 3130309)
cidade7 <- Minas %>% filter(CD_MUN == 3113909)
cidade8
# Criar o mapa
ggplot() +
geom_sf(data = Minas) +
geom_sf(data = cidade, fill = "#7183de", color = "black") +
geom_sf(data = cidade2, fill = "#7183de", color = "black") +
geom_sf(data = cidade3, fill = "#7183de", color = "black") +
geom_sf(data = cidade4, fill = "#7183de", color = "black") +
geom_sf(data = cidade5, fill = "#7183de", color = "black") +
geom_sf(data = cidade6, fill = "#7183de", color = "black") +
geom_sf(data = cidade7, fill = "#7183de", color = "black") +
geom_sf(data = cidade8, fill = "#7183de", color = "black")
5.4.6.2 Alterando a cor das linhas
Neste exemplo iremos alterar as cores das linhas dos municípios de Barbacena, São João Del Rei e Lavras. Para isto utilizaremos a função “color”.
## Barbacena
<- 3105608
codigo_ibge
## São João Del Rei
<- 3162500
codigo_ibge2
## Lavras
<- 3138203
codigo_ibge3
# Filtrar apenas a cidade desejada
<- Minas %>% filter(CD_MUN == 3105608)
cidade <- Minas %>% filter(CD_MUN == 3162500)
cidade2 <- Minas %>% filter(CD_MUN == 3138203)
cidade3
# Criar o mapa
ggplot() +
geom_sf(data = Minas) +
geom_sf(data = cidade, color = "red") +
geom_sf(data = cidade2, color = "blue") +
geom_sf(data = cidade3, color = "green")
Como podemos ver no mapa acima, destacamos Barbacena de vermelho, São João Del Rei de azul e Lavras de verde.
5.4.6.3 Plotando somente as regiões com cores das linhas que delimitam os municípios destacadas
Para isto basta retirar do código a função “geom_sf(data = Minas)”.
ggplot() +
geom_sf(data = cidade, color = "red") +
geom_sf(data = cidade2, color = "blue") +
geom_sf(data = cidade3, color = "green")
5.4.6.4 Plotando determinadas regiões dentro de Minas Gerais
# Região Viçosa
<- 3171303 # Viçosa
codigo_ibge <- 3110202 # Cajuri
codigo_ibge2 <- 3169000 # Tocantins
codigo_ibge3 <- 3150802 # Piranga
codigo_ibge4
# Filtrar apenas a cidade desejada
<- Minas %>% filter(CD_MUN == 3171303)
cidade <- Minas %>% filter(CD_MUN == 3110202)
cidade2 <- Minas %>% filter(CD_MUN == 3169000)
cidade3 <- Minas %>% filter(CD_MUN == 3150802)
cidade4
# Criar o mapa apenas para a região de interesse
ggplot() +
geom_sf(data = cidade) +
geom_sf(data = cidade2) +
geom_sf(data = cidade3) +
geom_sf(data = cidade4)
# Região Lavras
<- 3138203 # Lavras
codigo_ibge5 <- 3111200 # Campo Belo
codigo_ibge6 <- 3130309 # Iguatama
codigo_ibge7 <- 3113909 # Carmo da Cachoeira
codigo_ibge8
# Filtrar apenas a cidade desejada
<- Minas %>% filter(CD_MUN == 3138203)
cidade5 <- Minas %>% filter(CD_MUN == 3111200)
cidade6 <- Minas %>% filter(CD_MUN == 3130309)
cidade7 <- Minas %>% filter(CD_MUN == 3113909)
cidade8
# Criar o mapa apenas para a região de interesse
ggplot() +
geom_sf(data = cidade5) +
geom_sf(data = cidade6) +
geom_sf(data = cidade7) +
geom_sf(data = cidade8)
5.4.6.5 Destacando os munícipios com cores
Para isto utilizaremos a função “fill”. Neste exemplo iremos utilizar as mesmas cidades do exemplo anterior.
# Barbacena
<- 3105608
codigo_ibge
# São João Del Rei
<- 3162500
codigo_ibge2
# Lavras
<- 3138203
codigo_ibge3
# Filtrar apenas a cidade desejada
<- Minas %>% filter(CD_MUN == 3105608)
cidade <- Minas %>% filter(CD_MUN == 3162500)
cidade2 <- Minas %>% filter(CD_MUN == 3138203)
cidade3
# Criar o mapa
ggplot() +
geom_sf(data = Minas) +
geom_sf(data = cidade, fill = "red") +
geom_sf(data = cidade2, fill = "blue") +
geom_sf(data = cidade3, fill = "green")
5.4.6.6 Plotando somente as regiões com cores dos municípios destacadas
ggplot() +
geom_sf(data = cidade, fill = "red") +
geom_sf(data = cidade2, fill = "blue") +
geom_sf(data = cidade3, fill = "green")
Nestas funções vistas acima, podemos também podemos integrar as duas funções, delimitando as linhas e cores de destaque iguais ou de cores diferentes entre elas.
5.4.6.7 Cores iguais entre as linhas e o destaque dos municípios
ggplot() +
geom_sf(data = cidade, fill = "red", color = "red") +
geom_sf(data = cidade2, fill = "blue", color = "blue") +
geom_sf(data = cidade3, fill = "green", color = "green")
5.4.6.8 Cores diferentes entre as linhas e o destaque dos municípios
ggplot() +
geom_sf(data = cidade, fill = "red", color = "black") +
geom_sf(data = cidade2, fill = "blue", color = "brown") +
geom_sf(data = cidade3, fill = "green", color = "orange")
5.5 Alterando o layout
5.5.1 Alterando o fundo através da função “theme”
São várias opções de temas prontas disponíveis, como:
theme_gray(): tema com fundo cinza e linhas de grade brancas, projetado para apresentar os dados e ainda facilitar as comparações.
theme_bw(): tema escuro sobre luz. Pode funcionar melhor para apresentações exibidas com um projetor.
theme_linedraw(): tema com apenas linhas pretas de várias larguras em fundos brancos, lembrando um desenho de linha.
theme_light(): tema com linhas e eixos cinza claro, para direcionar mais atenção para os dados.
theme_dark(): tema com fundo escuro, útil para fazer sobressair linhas finas coloridas.
theme_minimal(): tema minimalista sem anotações de fundo. theme_classic(): tema com linhas de eixo x e y e sem linhas de grade. tema_void(): tema completamente vazio.
5.5.2 Alterando o fundo manualmente
5.5.2.1 Importando imagens
<- readPNG("Fundos/images.png") imagem
5.5.2.2 Ajustando imagem ao mapa
<- ggplot() +
fundo annotation_custom(rasterGrob(imagem, width = unit(1, "npc"), height = unit(1, "npc"))) +
theme_void()
5.5.2.3 Criando o mapa e combinando arquivo de imagem
+
fundo geom_sf(data = Minas)
5.5.2.4 Cores sólidas
# Definindo a cor
<- c("blue")
cor # Aplicando a cor ao fundo do mapa
<- ggplot() +
fundo annotation_custom(rasterGrob(cor, width = unit(1, "npc"), height = unit(1, "npc"))) +
theme_void()
# Criando o mapa e combinando arquivo que contém a cor
+
fundo geom_sf(data = Minas)
6 Usando o pacote geobr
Para colorir os mapas que criaremos a seguir, iremos usar o código de cores hexadecimal.
O “pick color” é ideal para definir a cor desejada. Ao digitar este termo no Google você verá a seguinte janela.
Para selecionar a cor desejada, você pode utilizar o seletor de cores para um ajuste fino e posteriormente para utilizar a cor no software R, basta copiar o código da cor que se encontra na barra com o nome “HEX” na parte inferior.
6.1 País
<-read_country(year=2018)
brasil<- read_state(year=2018)
estados
ggplot() +
geom_sf(data=brasil,fill="#2D3E50", color="#FEBF57") +
geom_sf(data = estados, fill = NA, color = "orange")
6.2 Regiões
<-read_region(year=2018)
regioes
ggplot() +
geom_sf(data=regioes,fill="#2D3E50", color="#FEBF57")
6.3 Estados
6.3.1 Todos os estados
= read_state(code_state = "all", year = 2018)
estados plot(estados)
ggplot() +
geom_sf(data = estados, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.3.2 Estado específico
= read_state(code_state = 43, year = 2018)
rs plot(rs)
ggplot() +
geom_sf(data = rs, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.4 Municípios
6.4.1 Todos os municípios
<- read_municipality(code_muni = "all", year = 2020)
municipios plot(municipios)
ggplot() +
geom_sf(data = municipios, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.4.2 Município específico
= read_municipality(code_muni = 3102100, year = 2020)
vicosamg plot(vicosamg)
ggplot() +
geom_sf(data = vicosamg, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.4.3 Municípios de um Estado específico
= read_municipality(code_muni = 42, year = 2020)
sc plot(sc)
ggplot() +
geom_sf(data = sc, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.5 Mesorregiões
6.5.1 Todas as mesorregiões
= read_meso_region(code_meso = "all", year = 2020)
meso plot(meso)
ggplot() +
geom_sf(data = meso, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.5.2 Mesorregião específica
= read_meso_region(code_meso = 12, year = 2020)
zonadamatamg plot(zonadamatamg)
ggplot() +
geom_sf(data = zonadamatamg, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.6 Microrregiões
6.6.1 Todas as microrregiões
= read_micro_region(code_micro = "all", year = 2020)
micro plot(micro)
ggplot() +
geom_sf(data = micro, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.6.2 Microrregiões em um Estado específico
= read_micro_region(code_micro = 31)
mg plot(mg)
ggplot() +
geom_sf(data = mg, fill="#2D3E50", color="#FEBF57", size=.15, show.legend = F)
6.7 Sobreposição
6.7.1 Sobrepondo um estado
<- read_country(year=2018)
br
= read_state(code_state = 31)
mg
ggplot() +
geom_sf(data=br, fill="#2D3E50", color="#FEBF57")+
geom_sf(data=mg, fill="#FEBF57")
6.7.2 Sobrepondo uma cidade
= read_state(code_state = 31)
mg
= read_municipality(code_muni = 3102100)
vicosa
ggplot() +
geom_sf(data = mg, fill="#2D3E50", color="#FEBF57") +
geom_sf(data = vicosa, fill = "#FEBF57")
6.8 Plotando dados
Iremos utilizar dados da Fundação Brasileira para o Desenvolvimento Sustentável. Acesse: http://geo.fbds.org.br.
Abra a pasta do Estado de seu interesse. Exemplo: AM (Amazonas).
Agora escolha um município. Exemplo: Alvaraes.
Nos nossos exemplos iremos utilizar informações de rios simples e de nascentes presentes na pasta “HIDROGRAFIA” e informações de uso do solo presente na pasta “USO”. Vamos clicar com o botão direito sobre o arquivo de interesse e em seguida copiar o link, pois iremos colá-lo no script do R posteriormente.
6.8.1 Rios simples
Inicialmente faremos o download dos rios simples de Uberlândia – MG disponíveis no site citado anteriormente no formato shp, acompanhado dos formatos dbf, prj e shx.
download.file(url = "http://geo.fbds.org.br/MG/UBERLANDIA/HIDROGRAFIA/MG_3170206_RIOS_SIMPLES.dbf",
destfile = ".MG_3170206_RIOS_SIMPLES.dbf", mode = "wb")
download.file(url = "http://geo.fbds.org.br/MG/UBERLANDIA/HIDROGRAFIA/MG_3170206_RIOS_SIMPLES.prj",
destfile = ".MG_3170206_RIOS_SIMPLES.prj", mode = "wb")
download.file(url = "http://geo.fbds.org.br/MG/UBERLANDIA/HIDROGRAFIA/MG_3170206_RIOS_SIMPLES.shp",
destfile = ".MG_3170206_RIOS_SIMPLES.shp", mode = "wb")
download.file(url = "http://geo.fbds.org.br/MG/UBERLANDIA/HIDROGRAFIA/MG_3170206_RIOS_SIMPLES.shx",
destfile = ".MG_3170206_RIOS_SIMPLES.shx", mode = "wb")
6.8.1.1 Importação de dados geoespaciais dos rios simples de Uberlândia - MG
<- st_read(".MG_3170206_RIOS_SIMPLES.shp") rios
Reading layer `.MG_3170206_RIOS_SIMPLES' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/.MG_3170206_RIOS_SIMPLES.shp'
using driver `ESRI Shapefile'
Simple feature collection with 3048 features and 6 fields
Geometry type: LINESTRING
Dimension: XY
Bounding box: xmin: 728976 ymin: 7850977 xmax: 825605.5 ymax: 7942095
Projected CRS: SIRGAS 2000 / UTM zone 22S
plot(rios$geometry)
6.8.1.2 Importação de dados geoespaciais dos Municipios MG
<- read_municipality(code_muni = 'MG', year = 2015)
muni_mg muni_mg
Simple feature collection with 853 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -51.04594 ymin: -22.92276 xmax: -39.85727 ymax: -14.23333
Geodetic CRS: SIRGAS 2000
First 10 features:
code_muni name_muni code_state abbrev_state
1 3100104 Abadia Dos Dourados 31 MG
2 3100203 Abaeté 31 MG
3 3100302 Abre Campo 31 MG
4 3100401 Acaiaca 31 MG
5 3100500 Açucena 31 MG
6 3100609 Água Boa 31 MG
7 3100708 Água Comprida 31 MG
8 3100807 Aguanil 31 MG
9 3100906 Águas Formosas 31 MG
10 3101003 Águas Vermelhas 31 MG
geom
1 MULTIPOLYGON (((-47.42967 -...
2 MULTIPOLYGON (((-45.1393 -1...
3 MULTIPOLYGON (((-42.31071 -...
4 MULTIPOLYGON (((-43.02387 -...
5 MULTIPOLYGON (((-42.36208 -...
6 MULTIPOLYGON (((-42.32271 -...
7 MULTIPOLYGON (((-47.98116 -...
8 MULTIPOLYGON (((-45.34247 -...
9 MULTIPOLYGON (((-40.80491 -...
10 MULTIPOLYGON (((-41.36426 -...
plot(muni_mg$geom, col = "gray")
6.8.1.3 Importação de dados geoespaciais de Uberlândia
<- read_municipality(code_muni = 3170206, year = 2015)
ub_limit ub_limit
Simple feature collection with 1 feature and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -48.82355 ymin: -19.4165 xmax: -47.90314 ymax: -18.5935
Geodetic CRS: SIRGAS 2000
code_muni name_muni code_state abbrev_state geom
824 3170206 Uberlândia 31 MG MULTIPOLYGON (((-48.06139 -...
plot(ub_limit$geom, col = "gray")
6.8.1.4 Importação de dados geoespaciais dos municipios limitrofes de Uberlândia
tm_shape(muni_mg, bbox = ub_limit) +
tm_polygons(col = "lightgrey") +
tm_shape(ub_limit) +
tm_borders(col = 'red')
6.8.1.5 Sobreposição de dados geoespaciais de Uberlândia
<- tm_shape(muni_mg, bbox = ub_limit) +
m1 tm_polygons(col = "lightgrey") +
tm_text('name_muni') +
tm_shape(ub_limit) +
tm_polygons(col = "darkgrey") +
tm_text('name_muni') +
tm_shape(rios) +
tm_lines(col = "blue") +
tm_scale_bar() +
tm_layout(main.title = "Rios simples de Uberlândia - MG", legend.outside = T, main.title.position = 'center')
6.8.1.6 Salvando o mapa
tmap_save(m1, filename = "nas_ub.png")
6.8.2 Nascentes
Inicialmente faremos o download das nascentes do Rio de Janeiro – RJ disponíveis no site citado anteriormente no formato shp, acompanhado dos formatos dbf, prj e shx.
download.file(url = "http://geo.fbds.org.br/RJ/RIO_DE_JANEIRO/HIDROGRAFIA/RJ_3304557_NASCENTES.dbf", destfile = ".RJ_3304557_NASCENTES.dbf", mode = "wb")
download.file(url = "http://geo.fbds.org.br/RJ/RIO_DE_JANEIRO/HIDROGRAFIA/RJ_3304557_NASCENTES.prj", destfile = ".RJ_3304557_NASCENTES.prj", mode = "wb")
download.file(url = "http://geo.fbds.org.br/RJ/RIO_DE_JANEIRO/HIDROGRAFIA/RJ_3304557_NASCENTES.shp", destfile = ".RJ_3304557_NASCENTES.shp", mode = "wb")
download.file(url = "http://geo.fbds.org.br/RJ/RIO_DE_JANEIRO/HIDROGRAFIA/RJ_3304557_NASCENTES.shx", destfile = ".RJ_3304557_NASCENTES.shx", mode = "wb")
6.8.3 Importação de dados geoespaciais das nascentes do Rio de Janeiro - RJ
<- st_read(".RJ_3304557_NASCENTES.shp") nas_rj
Reading layer `.RJ_3304557_NASCENTES' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/.RJ_3304557_NASCENTES.shp'
using driver `ESRI Shapefile'
Simple feature collection with 1961 features and 5 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 631785.5 ymin: 7449319 xmax: 688312.2 ymax: 7478840
Projected CRS: SIRGAS 2000 / UTM zone 23S
plot(nas_rj$geometry)
6.8.4 Importação de dados geoespaciais dos municípios do Rio de Janeiro - RJ
<- read_municipality(code_muni = 'RJ', year = 2015)
muni_rj muni_rj
Simple feature collection with 92 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -44.88932 ymin: -23.36893 xmax: -40.95852 ymax: -20.76323
Geodetic CRS: SIRGAS 2000
First 10 features:
code_muni name_muni code_state abbrev_state
1 3300100 Angra Dos Reis 33 RJ
2 3300159 Aperibé 33 RJ
3 3300209 Araruama 33 RJ
4 3300225 Areal 33 RJ
5 3300233 Armação Dos Búzios 33 RJ
6 3300258 Arraial Do Cabo 33 RJ
7 3300308 Barra Do Piraí 33 RJ
8 3300407 Barra Mansa 33 RJ
9 3300456 Belford Roxo 33 RJ
10 3300506 Bom Jardim 33 RJ
geom
1 MULTIPOLYGON (((-44.35695 -...
2 MULTIPOLYGON (((-42.1159 -2...
3 MULTIPOLYGON (((-42.18249 -...
4 MULTIPOLYGON (((-43.04907 -...
5 MULTIPOLYGON (((-41.9443 -2...
6 MULTIPOLYGON (((-41.97302 -...
7 MULTIPOLYGON (((-43.74861 -...
8 MULTIPOLYGON (((-44.00564 -...
9 MULTIPOLYGON (((-43.32929 -...
10 MULTIPOLYGON (((-42.29376 -...
plot(muni_rj$geom, col = "gray")
6.8.5 Importação de dados geoespaciais do Rio de Janeiro - RJ
<- read_municipality(code_muni = 3304557, year = 2015)
rj_limit rj_limit
Simple feature collection with 1 feature and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -43.79654 ymin: -23.08289 xmax: -43.09911 ymax: -22.74605
Geodetic CRS: SIRGAS 2000
code_muni name_muni code_state abbrev_state
68 3304557 Rio De Janeiro 33 RJ
geom
68 MULTIPOLYGON (((-43.55912 -...
plot(rj_limit$geom, col = "gray")
6.8.5.1 Importação de dados geoespaciais dos municipios limitrofes do Rio de Janeiro
tm_shape(muni_rj, bbox = rj_limit) +
tm_polygons(col = "lightgrey") +
tm_shape(rj_limit) +
tm_borders(col = 'red')
6.8.5.2 Sobreposição de dados geoespaciais do Rio de Janeiro
<- tm_shape(muni_rj, bbox = rj_limit) +
m2 tm_polygons(col = "lightgrey") +
tm_text('name_muni') +
tm_shape(rj_limit) +
tm_polygons(col = "darkgrey") +
tm_text('name_muni') +
tm_shape(nas_rj) +
tm_dots(col = "blue", size = .01) +
tm_scale_bar() +
tm_layout(main.title = "Nascentes do Rio de Janeiro - RJ", legend.outside = T, main.title.position = 'center')
6.8.5.3 Salvando o mapa
tmap_save(m2, filename = "nas_rj.png")
6.8.6 Uso do solo
Inicialmente faremos o download do uso do solo de Goiânia – GO disponíveis no site citado anteriormente no formato shp, acompanhado dos formatos dbf, prj e shx.
download.file(url = "http://geo.fbds.org.br/GO/GOIANIA/USO/GO_5208707_USO.dbf",
destfile = ".GO_5208707_USO.dbf", mode = "wb")
download.file(url = "http://geo.fbds.org.br/GO/GOIANIA/USO/GO_5208707_USO.prj",
destfile = ".GO_5208707_USO.prj", mode = "wb")
download.file(url = "http://geo.fbds.org.br/GO/GOIANIA/USO/GO_5208707_USO.shp",
destfile = ".GO_5208707_USO.shp", mode = "wb")
download.file(url = "http://geo.fbds.org.br/GO/GOIANIA/USO/GO_5208707_USO.shx",
destfile = ".GO_5208707_USO.shx", mode = "wb")
6.8.7 Importação de dados geoespaciais de uso do solo de Goiânia - GO
<- st_read(".GO_5208707_USO.shp") uso_solo_go
Reading layer `.GO_5208707_USO' from data source
`/Users/gabrielpaiva/Library/CloudStorage/GoogleDrive-gabriel.f.paiva@ufv.br/.shortcut-targets-by-id/1NnvJezUhOSk-Ea_iSxKgc0LZHts4UxSg/Inova Data/Ebooks/Mapas/Mapas/.GO_5208707_USO.shp'
using driver `ESRI Shapefile'
Simple feature collection with 5743 features and 6 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 665578.6 ymin: 8138326 xmax: 705050.2 ymax: 8180040
Projected CRS: SIRGAS 2000 / UTM zone 22S
plot(uso_solo_go$geometry)
6.8.8 Municipios GO
<- read_municipality(code_muni = 'GO', year = 2015)
muni_go muni_go
Simple feature collection with 246 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -53.25121 ymin: -19.49862 xmax: -45.90697 ymax: -12.39576
Geodetic CRS: SIRGAS 2000
First 10 features:
code_muni name_muni code_state abbrev_state
1 5200050 Abadia De Goiás 52 GO
2 5200100 Abadiânia 52 GO
3 5200134 Acreúna 52 GO
4 5200159 Adelândia 52 GO
5 5200175 Água Fria De Goiás 52 GO
6 5200209 Água Limpa 52 GO
7 5200258 Águas Lindas De Goiás 52 GO
8 5200308 Alexânia 52 GO
9 5200506 Aloândia 52 GO
10 5200555 Alto Horizonte 52 GO
geom
1 MULTIPOLYGON (((-49.38399 -...
2 MULTIPOLYGON (((-48.61296 -...
3 MULTIPOLYGON (((-50.2453 -1...
4 MULTIPOLYGON (((-50.13909 -...
5 MULTIPOLYGON (((-47.4784 -1...
6 MULTIPOLYGON (((-48.76536 -...
7 MULTIPOLYGON (((-48.28166 -...
8 MULTIPOLYGON (((-48.40972 -...
9 MULTIPOLYGON (((-49.41169 -...
10 MULTIPOLYGON (((-49.43437 -...
plot(muni_go$geom, col = "gray")
6.8.9 Goiânia
<- read_municipality(code_muni = 5208707, year = 2015)
goiania_limit goiania_limit
Simple feature collection with 1 feature and 4 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -49.44692 ymin: -16.83181 xmax: -49.07802 ymax: -16.45367
Geodetic CRS: SIRGAS 2000
code_muni name_muni code_state abbrev_state geom
95 5208707 Goiânia 52 GO MULTIPOLYGON (((-49.17669 -...
plot(goiania_limit$geom, col = "gray")
6.8.10 Goiânia com municipios limitrofes
tm_shape(muni_go, bbox = goiania_limit) +
tm_polygons(col = "lightgrey") +
tm_shape(goiania_limit) +
tm_borders(col = 'red')
6.8.10.1 Sobreposição de dados geoespaciais de Goiânia
<- tm_shape(muni_go, bbox = goiania_limit) +
m3 tm_polygons(col = "lightgrey") +
tm_text('name_muni') +
tm_shape(goiania_limit) +
tm_polygons(col = "darkgrey") +
tm_text('name_muni') +
tm_shape(uso_solo_go) +
tm_fill("CLASSE_USO", palette = "Set3", title = "Uso do Solo") +
tm_scale_bar() +
tm_layout(main.title = "Uso do Solo de Goiânia - GO", legend.outside = T, main.title.position = 'center')
6.8.10.2 Salvando o mapa
tmap_save(m3, filename = "map_goiania_uso_solo.png")
6.9 Mapas bivariados
Para criar mapas bivariados, vamos utilizar dados encontrados em: https://datasus.saude.gov.br/informacoes-de-saude-tabnet/.
Vamos fazer o download de tabelas csv da aba “DEMOGRÁFICAS E SOCIOECONÔMICAS”.
Vamos fazer o download dos dados de taxa de analfabetismo do Estado do Maranhão como exemplo. Primeiro, clicaremos no tópico Educação. Na nova janela, marcaremos a caixa “Taxa de analfabetismo” e na caixa de Abrangência Geográfica selecionaremos “Maranhão”.
Na janela seguinte, clicaremos em “mostra”.
Na nova janela, rolaremos até em baixo e clicaremos em “COPIA COMO .CSV” para fazer o download.
Vamos abrir o arquivo .csv na pasta de downloads e excluir as linhas de texto no início e no final da tabela, além de retirar os acentos presentes nos títulos das colunas (exemplo: acento no nome município).
6.9.1 Exemplo 1: Dados de taxa de analfabetismo e de PIB per capita do Estado de Minas Gerais
Inicialmente, vamos carregar os dados já editados, separar os códigos do nome do município em cada tabela e em seguida juntar em uma única tabela o código do município e as duas variáveis em estudo.
<- read.csv("ibge_censo_cnv_alfmg224312167_249_144_152.csv", sep = ";")
dado1 head(dado1)
Municipio Taxa_de_analfabetismo
1 310010 ABADIA DOS DOURADOS 7.9
2 310020 ABAETE 8.0
3 310030 ABRE CAMPO 12.0
4 310040 ACAIACA 14.3
5 310050 ACUCENA 21.2
6 310060 AGUA BOA 25.3
<- read.csv("ibge_cnv_pibmu224731167_249_144_152.csv", sep = ";")
dado2 $PIB_per_capita <- gsub(",", ".", dado2$PIB_per_capita)
dado2head(dado2)
Municipio PIB_per_capita
1 310010 ABADIA DOS DOURADOS 20033.50
2 310020 ABAETE 13180.02
3 310030 ABRE CAMPO 9972.90
4 310040 ACAIACA 7573.63
5 310050 ACUCENA 6269.22
6 310060 AGUA BOA 7139.76
$code_muni <- substr(dado1$Municipio, 1, 6)
dado1$Municipio <- NULL
dado1head(dado1)
Taxa_de_analfabetismo code_muni
1 7.9 310010
2 8.0 310020
3 12.0 310030
4 14.3 310040
5 21.2 310050
6 25.3 310060
$code_muni <- substr(dado2$Municipio, 1, 6)
dado2$Municipio <- NULL
dado2head(dado2)
PIB_per_capita code_muni
1 20033.50 310010
2 13180.02 310020
3 9972.90 310030
4 7573.63 310040
5 6269.22 310050
6 7139.76 310060
<- merge(dado1, dado2, by = "code_muni")
dados head(dados)
code_muni Taxa_de_analfabetismo PIB_per_capita
1 310010 7.9 20033.50
2 310020 8.0 13180.02
3 310030 12.0 9972.90
4 310040 14.3 7573.63
5 310050 21.2 6269.22
6 310060 25.3 7139.76
$code_muni <- as.numeric(dados$code_muni)
dados$PIB_per_capita <- as.numeric(dados$PIB_per_capita) dados
Agora vamos carregar os dados dos municípios e do Estado de Minas Gerais:
<- read_municipality(code_muni = 31)
muni.mg <- read_state(31) mg
Vamos remover o último caractere do código do município dos dados muni.mg, para ficar igual o código da tabela dados:
$code_muni <- substr(muni.mg$code_muni, 1,
muni.mgnchar(muni.mg$code_muni) - 1)
$code_muni <- as.numeric(muni.mg$code_muni) muni.mg
Vamos juntar as tabelas muni.mg e dados pelo código do município:
<- full_join(muni.mg, dados, by='code_muni') dados.juntos
Vamos criar uma classificação bivariada, que é uma maneira de categorizar os dados em duas variáveis simultaneamente:
<- bi_class(dados.juntos, x = Taxa_de_analfabetismo,
dados.bi y = PIB_per_capita, style = 'equal', dim = 4)
head(dados.bi)
Simple feature collection with 6 features and 7 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -47.67975 ymin: -20.45584 xmax: -42.04516 ymax: -17.7664
Geodetic CRS: SIRGAS 2000
code_muni name_muni code_state abbrev_state Taxa_de_analfabetismo
1 310010 Abadia Dos Dourados 31 MG 7.9
2 310020 Abaeté 31 MG 8.0
3 310030 Abre Campo 31 MG 12.0
4 310040 Acaiaca 31 MG 14.3
5 310050 Açucena 31 MG 21.2
6 310060 Água Boa 31 MG 25.3
PIB_per_capita geom bi_class
1 20033.50 MULTIPOLYGON (((-47.48345 -... 1-1
2 13180.02 MULTIPOLYGON (((-45.24166 -... 1-1
3 9972.90 MULTIPOLYGON (((-42.49664 -... 2-1
4 7573.63 MULTIPOLYGON (((-43.12231 -... 2-1
5 6269.22 MULTIPOLYGON (((-42.38168 -... 3-1
6 7139.76 MULTIPOLYGON (((-42.41357 -... 3-1
Vamos plotar o mapa e a legenda, e em seguida uni-los:
<- ggplot() +
mapa geom_sf (data = dados.bi,
aes(fill = bi_class),
col = alpha('grey',.2),
show.legend = FALSE) +
bi_scale_fill(pal = 'DkViolet2', dim = 4)
<- bi_legend(pal = 'DkViolet2',
legenda xlab = "Taxa de analfabetismo",
ylab = "PIB per capita", size = 10)
+ inset_element(legenda, left = 0.002, right = 0.33,
mapa bottom = 0.5, top = 0.995)
6.9.2 Exemplo 2: Dados de renda média domiciliar per capita e taxa de desemprego do Estado de São Paulo
<- read.csv("ibge_censo_cnv_ren103314167_249_144_148.csv", sep = ";")
dado1 $Renda_media_domic._per_capita <- gsub(",", ".", dado1$Renda_media_domic._per_capita)
dado1head(dado1)
Municipio Renda_media_domic._per_capita
1 350010 ADAMANTINA 963.25
2 350020 ADOLFO 640.44
3 350030 AGUAI 625.51
4 350040 AGUAS DA PRATA 846.96
5 350050 AGUAS DE LINDOIA 703.69
6 350055 AGUAS DE SANTA BARBARA 797.97
<- read.csv("ibge_censo_cnv_desem103405167_249_144_148.csv", sep = ";")
dado2 $Taxa_de_desemprego_16a_e. <- gsub(",", ".", dado2$Taxa_de_desemprego_16a_e.)
dado2head(dado2)
Municipio Taxa_de_desemprego_16a_e.
1 350010 ADAMANTINA 5.92
2 350020 ADOLFO 6.42
3 350030 AGUAI 6.59
4 350040 AGUAS DA PRATA 6.49
5 350050 AGUAS DE LINDOIA 3.59
6 350055 AGUAS DE SANTA BARBARA 2.87
$code_muni <- substr(dado1$Municipio, 1, 6)
dado1$Municipio <- NULL
dado1head(dado1)
Renda_media_domic._per_capita code_muni
1 963.25 350010
2 640.44 350020
3 625.51 350030
4 846.96 350040
5 703.69 350050
6 797.97 350055
$code_muni <- substr(dado2$Municipio, 1, 6)
dado2$Municipio <- NULL
dado2head(dado2)
Taxa_de_desemprego_16a_e. code_muni
1 5.92 350010
2 6.42 350020
3 6.59 350030
4 6.49 350040
5 3.59 350050
6 2.87 350055
<- merge(dado1, dado2, by = "code_muni")
dados head(dados)
code_muni Renda_media_domic._per_capita Taxa_de_desemprego_16a_e.
1 350010 963.25 5.92
2 350020 640.44 6.42
3 350030 625.51 6.59
4 350040 846.96 6.49
5 350050 703.69 3.59
6 350055 797.97 2.87
Agora vamos carregar os dados dos municípios e do Estado de São Paulo:
<- read_municipality(code_muni = 35)
muni.sp <- read_state(35) sp
Vamos remover o último caracter do código do município dos dados muni.mg, para ficar igual o código da tabela dados:
$code_muni <- substr(muni.sp$code_muni, 1,
muni.spnchar(muni.sp$code_muni) - 1)
$code_muni <- as.numeric(muni.sp$code_muni)
muni.sp$code_muni <- as.numeric(dados$code_muni) dados
Vamos juntar as tabelas muni.mg e dados pelo código do município:
<- full_join(muni.sp, dados, by='code_muni')
dados.juntos $Renda_media_domic._per_capita <- as.numeric(dados.juntos$Renda_media_domic._per_capita)
dados.juntos$Taxa_de_desemprego_16a_e. <- as.numeric(dados.juntos$Taxa_de_desemprego_16a_e.) dados.juntos
Vamos criar uma classificação bivariada, que é uma maneira de categorizar os dados em duas variáveis simultaneamente:
<- bi_class(dados.juntos, x = Renda_media_domic._per_capita,
dados.bi y = Taxa_de_desemprego_16a_e., style = 'equal', dim = 4)
head(dados.bi)
Simple feature collection with 6 features and 7 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -51.17838 ymin: -23.03648 xmax: -46.54881 ymax: -21.19701
Geodetic CRS: SIRGAS 2000
code_muni name_muni code_state abbrev_state
1 350010 Adamantina 35 SP
2 350020 Adolfo 35 SP
3 350030 Aguaí 35 SP
4 350040 Águas Da Prata 35 SP
5 350050 Águas De Lindóia 35 SP
6 350055 Águas De Santa Bárbara 35 SP
Renda_media_domic._per_capita Taxa_de_desemprego_16a_e.
1 963.25 5.92
2 640.44 6.42
3 625.51 6.59
4 846.96 6.49
5 703.69 3.59
6 797.97 2.87
geom bi_class
1 MULTIPOLYGON (((-51.09093 -... 2-2
2 MULTIPOLYGON (((-49.69668 -... 1-2
3 MULTIPOLYGON (((-47.01254 -... 1-2
4 MULTIPOLYGON (((-46.73069 -... 2-2
5 MULTIPOLYGON (((-46.635 -22... 1-1
6 MULTIPOLYGON (((-49.28903 -... 2-1
Vamos plotar o mapa e a legenda, e em seguida uni-los:Vamos plotar o mapa e a legenda, e em seguida uni-los:
<- ggplot() +
mapa geom_sf (data = dados.bi,
aes(fill = bi_class),
col = alpha('grey',.2),
show.legend = FALSE) +
bi_scale_fill(pal = 'PinkGrn', dim = 4)
<- bi_legend(pal = 'PinkGrn',
legenda xlab = "Renda média per capita",
ylab = "Taxa de desemprego", size = 10)
+ inset_element(legenda, left = 0.002,
mapa right = 0.2,
bottom = 0.25,
top = 0.111)